package org.ufpe.cin.ip.projeto.Relatorio;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

import org.ufpe.cin.ip.projeto.Dados.BaseClasses.Carta;
import org.ufpe.cin.ip.projeto.Dados.BaseClasses.Mesa;


public class RelatorioMesa implements Iterable<Mesa>, IRelatorio, Serializable{
	private static final long serialVersionUID = 1L;
	private static final String SUFIX_FILE_PATH = "/RelatorioMesa.txt";
	static List<Mesa> mesas = new ArrayList<Mesa>();
	public String content = "";
		
	@Override
	public Iterator<Mesa> iterator() {
		return mesas.iterator();
	}
	
	@Override
	public <E> void gerarRelatorio(E element, String path) throws IOException {
		mesas.add((Mesa) element);
		
		File arq = new File(path+SUFIX_FILE_PATH);
		BufferedWriter out = new BufferedWriter(new FileWriter(arq));
		
		ListIterator<Mesa> it = mesas.listIterator();
		while (it.hasNext()) {
			Mesa aux = it.next();
			
			content += aux.getPosicaoDealer()+" - "+aux.getPote()+" - "+aux.getRodadaDeApostas()+" - "+aux.getRodadaDoJogo()+" - ";
			
			for(int i = 0; i < aux.getCartasComunitarias().length; i++){
				content += "[" + aux.getCartasComunitarias()[i].getNaipe().name() + ", ("+ aux.getCartasComunitarias()[i].getValor().getSimbolo()+")]";
			}
			
			content += aux.getVencedorRodada().getIsHadRaise()+" - "+aux.getVencedorRodada().getIsInGame()+" - "+aux.getVencedorRodada().getPosicao()+" - "+aux.getVencedorRodada().getSaldo()+" - ";
			
			Carta[] cards = aux.getVencedorRodada().getMao();
			for(int i = 0; i < cards.length; i++){
				content += "[" + cards[i].getNaipe().name() + ", ("+ cards[i].getValor().getSimbolo()+")]";
			}
			content += "\n";
		}
		out.write(content);
		out.close();
		
	}
}
